﻿namespace Vinno.Brand.Pack.Core
{
    public interface IBrandService
    {
        #region SpaceInfo
        /// <summary>
        /// 获取 实体查询数据集
        /// </summary>
        IQueryable<SpaceInfo> SpaceInfos { get; }

        /// <summary>
        /// 根据编号查找
        /// </summary>
        /// <param name="id">数据实体编号</param>
        /// <returns>业务操作结果</returns>
        Task<OperationResult<SpaceInfoOutputDto>> FindSpaceInfoById(Guid id);

        /// <summary>
        /// 新增
        /// </summary>
        /// <param name="dtos">DTO信息</param>
        /// <returns>业务操作结果</returns>
        Task<OperationResult> CreateSpaceInfos(params SpaceInfoInputDto[] dtos);

        /// <summary>
        /// 更新
        /// </summary>
        /// <param name="dtos">DTO信息</param>
        /// <returns>业务操作结果</returns>
        Task<OperationResult> UpdateSpaceInfos(params SpaceInfoInputDto[] dtos);

        /// <summary>
        /// 更新
        /// </summary>
        /// <param name="ids">数据实体编号</param>
        /// <returns>业务操作结果</returns>
        Task<OperationResult> DeleteSpaceInfos(params Guid[] ids);

        #endregion

        #region ProductCarousel
        /// <summary>
        /// 获取 实体查询数据集
        /// </summary>
        IQueryable<ProductCarousel> ProductCarousels { get; }

        /// <summary>
        /// 根据编号查找
        /// </summary>
        /// <param name="id">数据实体编号</param>
        /// <returns>业务操作结果</returns>
        Task<OperationResult<ProductCarouselOutputDto>> FindProductCarouselById(Guid id);

        /// <summary>
        /// 新增
        /// </summary>
        /// <param name="dtos">DTO信息</param>
        /// <returns>业务操作结果</returns>
        Task<OperationResult> CreateProductCarousels(params ProductCarouselInputDto[] dtos);

        /// <summary>
        /// 更新
        /// </summary>
        /// <param name="dtos">DTO信息</param>
        /// <returns>业务操作结果</returns>
        Task<OperationResult> UpdateProductCarousels(params ProductCarouselInputDto[] dtos);

        /// <summary>
        /// 更新
        /// </summary>
        /// <param name="ids">数据实体编号</param>
        /// <returns>业务操作结果</returns>
        Task<OperationResult> DeleteProductCarousels(params Guid[] ids);

        #endregion

        #region Product
        /// <summary>
        /// 获取 实体查询数据集
        /// </summary>
        IQueryable<Product> Products { get; }

        /// <summary>
        /// 根据编号查找
        /// </summary>
        /// <param name="id">数据实体编号</param>
        /// <returns>业务操作结果</returns>
        Task<OperationResult<ProductOutputDto>> FindProductById(Guid id);

        /// <summary>
        /// 新增
        /// </summary>
        /// <param name="dtos">DTO信息</param>
        /// <returns>业务操作结果</returns>
        Task<OperationResult> CreateProducts(params ProductInputDto[] dtos);

        /// <summary>
        /// 更新
        /// </summary>
        /// <param name="dtos">DTO信息</param>
        /// <returns>业务操作结果</returns>
        Task<OperationResult> UpdateProducts(params ProductInputDto[] dtos);

        /// <summary>
        /// 更新
        /// </summary>
        /// <param name="ids">数据实体编号</param>
        /// <returns>业务操作结果</returns>
        Task<OperationResult> DeleteProducts(params Guid[] ids);

        #endregion

        #region ProductCase
        /// <summary>
        /// 获取 实体查询数据集
        /// </summary>
        IQueryable<ProductCase> ProductCases { get; }

        /// <summary>
        /// 根据编号查找
        /// </summary>
        /// <param name="id">数据实体编号</param>
        /// <returns>业务操作结果</returns>
        Task<OperationResult<ProductCaseOutputDto>> FindProductCaseById(Guid id);

        /// <summary>
        /// 新增
        /// </summary>
        /// <param name="dtos">DTO信息</param>
        /// <returns>业务操作结果</returns>
        Task<OperationResult> CreateProductCases(params ProductCaseInputDto[] dtos);

        /// <summary>
        /// 更新
        /// </summary>
        /// <param name="dtos">DTO信息</param>
        /// <returns>业务操作结果</returns>
        Task<OperationResult> UpdateProductCases(params ProductCaseInputDto[] dtos);

        /// <summary>
        /// 更新
        /// </summary>
        /// <param name="ids">数据实体编号</param>
        /// <returns>业务操作结果</returns>
        Task<OperationResult> DeleteProductCases(params Guid[] ids);

        #endregion

        #region Saler
        /// <summary>
        /// 获取 实体查询数据集
        /// </summary>
        IQueryable<Saler> Salers { get; }

        /// <summary>
        /// 根据编号查找
        /// </summary>
        /// <param name="id">数据实体编号</param>
        /// <returns>业务操作结果</returns>
        Task<OperationResult<SalerOutputDto>> FindSalerById(Guid id);

        /// <summary>
        /// 新增
        /// </summary>
        /// <param name="dtos">DTO信息</param>
        /// <returns>业务操作结果</returns>
        Task<OperationResult> CreateSalers(params SalerInputDto[] dtos);

        /// <summary>
        /// 更新
        /// </summary>
        /// <param name="dtos">DTO信息</param>
        /// <returns>业务操作结果</returns>
        Task<OperationResult> UpdateSalers(params SalerInputDto[] dtos);

        /// <summary>
        /// 更新
        /// </summary>
        /// <param name="ids">数据实体编号</param>
        /// <returns>业务操作结果</returns>
        Task<OperationResult> DeleteSalers(params Guid[] ids);

        #endregion

        #region Suggest
        /// <summary>
        /// 获取 实体查询数据集
        /// </summary>
        IQueryable<Suggest> Suggests { get; }

        /// <summary>
        /// 根据编号查找
        /// </summary>
        /// <param name="id">数据实体编号</param>
        /// <returns>业务操作结果</returns>
        Task<OperationResult<SuggestOutputDto>> FindSuggestById(Guid id);

        /// <summary>
        /// 新增
        /// </summary>
        /// <param name="dtos">DTO信息</param>
        /// <returns>业务操作结果</returns>
        Task<OperationResult> CreateSuggests(params SuggestInputDto[] dtos);

        /// <summary>
        /// 更新
        /// </summary>
        /// <param name="dtos">DTO信息</param>
        /// <returns>业务操作结果</returns>
        Task<OperationResult> UpdateSuggests(params SuggestInputDto[] dtos);

        /// <summary>
        /// 更新
        /// </summary>
        /// <param name="ids">数据实体编号</param>
        /// <returns>业务操作结果</returns>
        Task<OperationResult> DeleteSuggests(params Guid[] ids);

        #endregion
    }
}
